﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Projeto_Trucadores.Classes;

namespace Projeto_Trucadores
{
    public partial class CadCliente : System.Web.UI.Page
    {
        MyManager manager;

        protected void Page_Load(object sender, EventArgs e)
        {
            manager = new MyManager();
        }

        protected void btnOK_Click(object sender, EventArgs e)
        {
            if (CamposPreenchidos())
            {
                if (!CadastroExist())
                {
                    SalvarDados();
                }
            }
            else
            {
                MensagemPreenchimento();
            }
        }

        private bool CadastroExist()
        {
            string select = string.Format("SELECT COUNT(*) FROM cliente WHERE email LIKE '{0}'", txtEmail.Text);

            try
            {
                int count = Convert.ToInt32(manager.ExecuteScalar(select));
                if (count > 0)
                {
                    string script = "<script>alert('Já existe uma conta com o e-mail informado!')</script>";
                    ClientScript.RegisterClientScriptBlock(GetType(), "Existe", script);
                    return true;
                }
                else
                {
                    select = string.Format("SELECT COUNT(*) FROM login WHERE login LIKE '{0}'", txtLogin.Text);
                    int logincount = Convert.ToInt32(manager.ExecuteScalar(select));
                    if (logincount > 0)
                    {
                        string script = "<script>alert('Já existe uma conta com o login informado!')</script>";
                        ClientScript.RegisterClientScriptBlock(GetType(), "Existe", script);
                        return true;
                    }
                    else
                        return false;
                }
            }
            catch
            {
                string script = "<script>alert('Desculpe não foi possível cadastrar! Houve algum erro com o banco de dados! Favor tentar mais tarde!'</script>";
                ClientScript.RegisterClientScriptBlock(GetType(), "Erro Banco", script);
                return true;
            }
        }

        private void SalvarDados()
        {
            string insert = string.Format(@"INSERT INTO cliente (nome, email, cpf, telefone1) VALUES ('{0}', '{1}', '{2}', '{3}')",
                txtNome.Text, txtEmail.Text, txtCPF.Text, txtTelefone.Text);
            try
            {
                manager.ExecuteNonQuery(insert);
                SalvarLogin();
            }
            catch
            {
                string script = "<script>alert('Desculpe não foi possível cadastrar! Houve algum erro com o banco de dados! Favor tentar mais tarde!'</script>";
                ClientScript.RegisterClientScriptBlock(GetType(), "Erro Banco", script);
            }
        }

        private void SalvarLogin()
        {
            string select = string.Format("SELECT clienteid FROM cliente WHERE email LIKE '{0}'", txtEmail.Text);
            try
            {
                object clienteid = manager.ExecuteScalar(select);
                string insert = string.Format("INSERT INTO login (login, senha, tipousuario, userid) VALUES ('{0}', '{1}', '{2}', '{3}')", txtLogin.Text,
                    txtSenha.Text, "cliente", clienteid);
                manager.ExecuteNonQuery(insert);
            }
            catch
            {
                string script = "<script>alert('Desculpe não foi possível cadastrar o login! Houve algum erro com o banco de dados! Favor tentar mais tarde!'</script>";
                ClientScript.RegisterClientScriptBlock(GetType(), "Erro Banco", script);
            }
        }

        private void MensagemPreenchimento()
        {
            string script = "<script>alert('Favor Preencher todos os campos com *!')</script>";
            ClientScript.RegisterClientScriptBlock(GetType(), "Preencher", script);
        }

        private bool CamposPreenchidos()
        {
            return ((!string.IsNullOrEmpty(txtNome.Text)) && (!string.IsNullOrEmpty(txtEmail.Text))
                && (!string.IsNullOrEmpty(txtLogin.Text)) && (!string.IsNullOrEmpty(txtSenha.Text)));
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            string script = "<script>cancela()</script>";
            ClientScript.RegisterClientScriptBlock(GetType(), "Cancela", script);
        }
    }
}